#include <iostream>
#include <stack>
#include <unordered_map>
using namespace std;

bool isBalanced(string s) {
    stack<char> st;
    unordered_map<char, char> openToClose = {{')', '('}, {']', '['}, {'}', '{'}, {'>', '<'}};
  
    for (char br : s) {
        if (openToClose.count(br)) {
            if (st.empty() || st.top() != openToClose[br]) {
                return false;
            }
            st.pop();
        } else {
            st.push(br);
        }
    }
  
    return st.empty();
}

int main() {
    string p;
    cout << "Введите скобочную последовательность: ";
    cin >> p;
  
    bool isCorrect = isBalanced(p);
    
    if (isCorrect) {
        cout << "true" << endl;
    } else {
        cout << "false" << endl;
    }

    return 0;
}
